import router from '@/router'
import { userUserStore } from '@/stores/user'
import axios from 'axios'
import { ElMessage } from 'element-plus'
import { baseUrl } from './constont'
// 创建axios实例
const http = axios.create({
  baseURL: baseUrl,
  timeout: 50000
})


// 添加请求拦截器
http.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  const userStore = userUserStore()
  if(userStore.userInfo.token){
		config.headers.fuge_token = userStore.userInfo.token
	}
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
http.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  const res = response.data
  // console.log(res)
  if (res.code === 401) {
    ElMessage({
		showClose: true,
		message: '登入失效,请重新登入',
		type: 'error',
	})
		const userStore = userUserStore()
		userStore.clearUserInfo()
		router.push('/login')
  } else if (res.code !== 200) {
    ElMessage({
		showClose: true,
		message: res.errorMessage,
		type: 'error',
	})
    return Promise.reject(res.errorMessage)
  }
  return response.data;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  console.log(error)
  if(error.response.status === 401){
		ElMessage({
			showClose: true,
			message: '登入失效,请重新登入',
			type: 'error',
		})
		const userStore = userUserStore()
		userStore.clearUserInfo()
		router.push('/login')
		return Promise.reject(error);

	}
  ElMessage({
		showClose: true,
		message: '系统异常,请联系管理员',
		type: 'error',
	})
  return Promise.reject(error);
});




export default http
